[HVMLOADER] Clean up makefile, change TPM detection.
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Wed, 29 Nov 2006 12:41:30 +0000 (12:41 +0000)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Wed, 29 Nov 2006 12:41:30 +0000 (12:41 +0000)
Signed-off-by: Keir Fraser <keir@xensource.com>
tools/firmware/hvmloader/Makefile
tools/firmware/hvmloader/acpi/build.c

index 829a9dec87bea761cd5ba73cff9a7b602a8c91df..763f472987991d7330f84aba735bcb7bd64f73b3 100644 (file)
 # Place - Suite 330, Boston, MA 02111-1307 USA.
 #
 
-# External CFLAGS can do more harm than good.
-CFLAGS :=
-
 override XEN_TARGET_ARCH = x86_32
 XEN_ROOT = ../../..
-include $(XEN_ROOT)/Config.mk
+CFLAGS := -I$(XEN_ROOT)/tools/libxc -I.
+include $(XEN_ROOT)/tools/Rules.mk
 
 # The HVM loader is started in 32-bit mode at the address below:
 LOADADDR = 0x100000
@@ -34,7 +32,7 @@ CFLAGS  += $(call cc-option,$(CC),-fno-stack-protector,)
 CFLAGS  += $(call cc-option,$(CC),-fno-stack-protector-all,)
 
 OBJCOPY  = objcopy
-CFLAGS  += -I$(XEN_ROOT)/tools/libxc -I. -fno-builtin -O2 -msoft-float
+CFLAGS  += -fno-builtin -O2 -msoft-float
 LDFLAGS  = -nostdlib -Wl,-N -Wl,-Ttext -Wl,$(LOADADDR)
 
 SRCS = hvmloader.c mp_tables.c util.c smbios.c
index 241c11332d3352dffbed16a97c8064e10b2da0a9..b2213918076bf7970db07b6a8d2c145d29486460 100644 (file)
@@ -115,7 +115,8 @@ int construct_secondary_tables(uint8_t *buf, unsigned long *table_ptrs)
     int offset = 0, nr_tables = 0;
     struct acpi_20_madt *madt;
     struct acpi_20_tcpa *tcpa;
-    static const uint16_t tis_did_vid_rid[] = {0x0001, 0x0001, 0x0001};
+    static const uint16_t tis_signature[] = {0x0001, 0x0001, 0x0001};
+    uint16_t *tis_hdr;
 
     /* MADT. */
     if ( (get_vcpu_nr() > 1) || get_apic_mode() )
@@ -126,8 +127,10 @@ int construct_secondary_tables(uint8_t *buf, unsigned long *table_ptrs)
     }
 
     /* TPM TCPA and SSDT. */
-    if ( memcmp((char *)0xFED40F00, tis_did_vid_rid,
-                sizeof(tis_did_vid_rid)) == 0 ) /* Probe for TIS interface. */
+    tis_hdr = (uint16_t *)0xFED40F00;
+    if ( (tis_hdr[0] == tis_signature[0]) &&
+         (tis_hdr[1] == tis_signature[1]) &&
+         (tis_hdr[2] == tis_signature[2]) )
     {
         memcpy(&buf[offset], AmlCode_TPM, sizeof(AmlCode_TPM));
         table_ptrs[nr_tables++] = (unsigned long)&buf[offset];